package com.ouc.dcrms.core.rmq;

import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.QueueingConsumer;

/**
 * @author WuPing
 * @version 2017年3月15日 下午10:26:30
 */

public class MsgReceiveDirect {
    
    private static final String EXCHANGE_NAME = "Direct_Logs";

    public static void main(String[] argv) throws Exception {
	ConnectionFactory factory = new ConnectionFactory();
	factory.setHost("localhost");
	Connection connection = factory.newConnection();
	Channel channel = connection.createChannel();

	channel.exchangeDeclare(EXCHANGE_NAME, "direct");
	String queueName = channel.queueDeclare().getQueue();

	if (argv.length < 1) {
	    System.err.println("Usage: ReceiveLogsDirect [info] [warning] [error]");
	    System.exit(1);
	}

	for (String severity : argv) {
	    channel.queueBind(queueName, EXCHANGE_NAME, severity);
	}

	System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

	QueueingConsumer consumer = new QueueingConsumer(channel);
	channel.basicConsume(queueName, true, consumer);

	while (true) {
	    QueueingConsumer.Delivery delivery = consumer.nextDelivery();
	    String message = new String(delivery.getBody());
	    String routingKey = delivery.getEnvelope().getRoutingKey();

	    System.out.println(" [x] Received '" + routingKey + "':'" + message + "'");
	}
    }
}
